# 3.求出每个平台在北美的平均销售业绩，线形图

# 1.求出每个平台总的销售业绩，并绘制出线性图，并做简单的数据分析
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
def topic_3(data: pd.DataFrame):
    # 设置绘图风格为ggplot
    plt.style.use("ggplot")

    # 设置中文编码和符号的正常显示
    plt.rcParams['font.family'] = 'sans-serif'
    plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS']
    plt.rcParams["axes.unicode_minus"] = False

    # 删除重复数据
    data.drop_duplicates(inplace=True)

    # 按平台分组，并计算每个平台在北美的平均销售业绩
    Platform_data = data.groupby(by=['Platform'])['NA_Sales'].mean()

    # 按平台销售业绩升序排序
    Platform_data.sort_values(ascending=True, inplace=True)

    # 创建大尺寸的图框
    fig = plt.figure(figsize=(16, 10))

    # 绘制折线图
    plt.plot(Platform_data.index,  # x轴数据
             Platform_data.values,  # y轴数据
             linestyle='-',  # 折线类型
             linewidth=3,  # 折线宽度
             color='royalblue',  # 折线颜色
             marker='o',  # 点的形状
             markersize=8,  # 点的大小
             markeredgecolor='black',  # 点的边框色
             markerfacecolor='red',  # 点的填充色
             label='平均销售业绩')  # 添加图例标签

    # 增加标题和坐标轴标签的字体大小
    plt.title('每个平台在北美的平均销售业绩', fontsize=16)
    plt.xlabel('平台', fontsize=14)
    plt.ylabel('平均销售业绩', fontsize=14)

    # 增加坐标轴刻度的字体大小
    plt.xticks(fontsize=12)
    plt.yticks(fontsize=12)

    # 剔除图框上边界和右边界的刻度
    plt.tick_params(top=False, right=False)

    # 为了避免x轴日期刻度标签的重叠，设置x轴刻度自动展现，并且45度倾斜
    fig.autofmt_xdate(rotation=45, ha='center')

    # 添加网格线
    plt.grid(True, linestyle='--', alpha=0.7)

    # 添加图例
    plt.legend(fontsize=12)

    # 保存图像
    plt.savefig('./static/img/topic_3_optimized.jpg')

    # 显示图形
    plt.show()